﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using Entities;

namespace ServiceContracts
{
    [ServiceContract(Namespace="http://Northwind.net")]
    public partial interface INorthwindService
    {	
    	[OperationContract(Name="GetAllCategories")]
    	List<Category> GetCategories();
    	 
    	[OperationContract]
    	List<Category> GetCategories(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Category GetCategory(System.Int32 Id);
    
    	[OperationContract]
    	List<Product> GetProductsFromCategory(Category entity);	 
    	
    
    
    	[OperationContract(Name="GetAllCustomers")]
    	List<Customer> GetCustomers();
    	 
    	[OperationContract]
    	List<Customer> GetCustomers(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Customer GetCustomer(System.String CustomerID);
    
    	[OperationContract]
    	List<Order> GetOrdersFromCustomer(Customer entity);	 
    	
    	[OperationContract]
    	List<CustomerDemographic> GetCustomerDemographicsFromCustomer(Customer entity);	 
    	
    	[OperationContract]
    	Member GetMemberFromCustomer(Customer entity);	 
    	
    
    
    	[OperationContract(Name="GetAllCustomerDemographics")]
    	List<CustomerDemographic> GetCustomerDemographics();
    	 
    	[OperationContract]
    	List<CustomerDemographic> GetCustomerDemographics(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	CustomerDemographic GetCustomerDemographic(System.String CustomerTypeID);
    
    	[OperationContract]
    	List<Customer> GetCustomersFromCustomerDemographic(CustomerDemographic entity);	 
    	
    
    
    	[OperationContract(Name="GetAllEmployees")]
    	List<Employee> GetEmployees();
    	 
    	[OperationContract]
    	List<Employee> GetEmployees(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Employee GetEmployee(System.Int32 EmployeeID);
    
    	[OperationContract]
    	List<Employee> GetEmployeesFromEmployee(Employee entity);	 
    	
    	[OperationContract]
    	Employee GetManagerFromEmployee(Employee entity);	 
    	
    	[OperationContract]
    	List<Order> GetOrdersFromEmployee(Employee entity);	 
    	
    
    
    	[OperationContract(Name="GetAllEmployeeInActivities")]
    	List<EmployeeInActivity> GetEmployeeInActivities();
    	 
    	[OperationContract]
    	List<EmployeeInActivity> GetEmployeeInActivities(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	EmployeeInActivity GetEmployeeInActivity(System.Int32 EmployeeID);
    
    	[OperationContract]
    	List<Employee> GetEmployeesFromEmployeeInActivity(EmployeeInActivity entity);	 
    	
    	[OperationContract]
    	Employee GetManagerFromEmployeeInActivity(EmployeeInActivity entity);	 
    	
    	[OperationContract]
    	List<Order> GetOrdersFromEmployeeInActivity(EmployeeInActivity entity);	 
    	
    
    
    	[OperationContract(Name="GetAllMembers")]
    	List<Member> GetMembers();
    	 
    	[OperationContract]
    	List<Member> GetMembers(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Member GetMember(System.String CustomerID);
    
    	[OperationContract]
    	Customer GetCustomerFromMember(Member entity);	 
    	
    
    
    	[OperationContract(Name="GetAllOrders")]
    	List<Order> GetOrders();
    	 
    	[OperationContract]
    	List<Order> GetOrders(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Order GetOrder(System.Int32 OrderID);
    
    	[OperationContract]
    	Customer GetCustomerFromOrder(Order entity);	 
    	
    	[OperationContract]
    	List<OrderDetail> GetOrderDetailsFromOrder(Order entity);	 
    	
    	[OperationContract]
    	Employee GetEmployeeFromOrder(Order entity);	 
    	
    
    
    	[OperationContract(Name="GetAllOrderDetailSet")]
    	List<OrderDetail> GetOrderDetailSet();
    	 
    	[OperationContract]
    	List<OrderDetail> GetOrderDetailSet(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	OrderDetail GetOrderDetail(System.Int32 OrderID, System.Int32 ProductID);
    
    	[OperationContract]
    	Order GetOrderFromOrderDetail(OrderDetail entity);	 
    	
    	[OperationContract]
    	Product GetProductFromOrderDetail(OrderDetail entity);	 
    	
    	[OperationContract]
    	List<OrderDetailComment> GetOrderDetailCommentsFromOrderDetail(OrderDetail entity);	 
    	
    
    
    	[OperationContract(Name="GetAllOrderDetailComments")]
    	List<OrderDetailComment> GetOrderDetailComments();
    	 
    	[OperationContract]
    	List<OrderDetailComment> GetOrderDetailComments(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	OrderDetailComment GetOrderDetailComment(System.Int32 Id);
    
    	[OperationContract]
    	OrderDetail GetOrderDetailsFromOrderDetailComment(OrderDetailComment entity);	 
    	
    
    
    	[OperationContract(Name="GetAllOutEmployees")]
    	List<OutEmployee> GetOutEmployees();
    	 
    	[OperationContract]
    	List<OutEmployee> GetOutEmployees(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	OutEmployee GetOutEmployee(System.Int32 EmployeeID);
    
    	[OperationContract]
    	List<Employee> GetEmployeesFromOutEmployee(OutEmployee entity);	 
    	
    	[OperationContract]
    	Employee GetManagerFromOutEmployee(OutEmployee entity);	 
    	
    	[OperationContract]
    	List<Order> GetOrdersFromOutEmployee(OutEmployee entity);	 
    	
    
    
    	[OperationContract(Name="GetAllProducts")]
    	List<Product> GetProducts();
    	 
    	[OperationContract]
    	List<Product> GetProducts(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	Product GetProduct(System.Int32 ProductID);
    
    	[OperationContract]
    	List<OrderDetail> GetOrderDetailsFromProduct(Product entity);	 
    	
    	[OperationContract]
    	Category GetCategoryFromProduct(Product entity);	 
    	
    
    
    	[OperationContract(Name="GetAllRetiredEmployees")]
    	List<RetiredEmployee> GetRetiredEmployees();
    	 
    	[OperationContract]
    	List<RetiredEmployee> GetRetiredEmployees(List<string> include, string filter, string orderBy, int? skip, int? take);
    	
    	[OperationContract]
    	RetiredEmployee GetRetiredEmployee(System.Int32 EmployeeID);
    
    	[OperationContract]
    	List<Employee> GetEmployeesFromRetiredEmployee(RetiredEmployee entity);	 
    	
    	[OperationContract]
    	Employee GetManagerFromRetiredEmployee(RetiredEmployee entity);	 
    	
    	[OperationContract]
    	List<Order> GetOrdersFromRetiredEmployee(RetiredEmployee entity);	 
    	
    
    
    	[OperationContract]
    	List<string> GenerateErrors(ClientContext clientContext);
    
    	[OperationContract]
    	[FaultContract(typeof(List<SaveError>))]
    	ClientContext SaveChanges(ClientContext context, bool validateBeforeSaving);
    }
}
